#ifndef BOXPARAMETERPACK_H_JM_20121014
#define BOXPARAMETERPACK_H_JM_20121014

#include "../boxes/BoxBaseTypes.h"

namespace jm4bbx {

	struct  BoxParamPack {
#ifdef BOBOX_VERSION_OLD 

		bobox::box_id_type id;
		bobox::box_tid_type tid;
		bobox::request* req;
		plainParameters params;

		BoxParamPack(bobox::box_id_type id, bobox::box_tid_type tid,
			const plainParameters &params, bobox::request* req) {

				this->id = id;
				this->tid = tid;
				this->params = params;
				this->req = req;
		}

		const plainParameters* getPlainParameters() const { return &params; }
#else
		plainParameters params;
		bobox::box_parameters_pack pack;

		BoxParamPack(const bobox::box_parameters_pack& pack,
			const plainParameters &params) {

				this->params = params;
				this->pack = pack;
		}


		plainParameters getPlainParameters() const { return params; }
#endif
	};

	struct  BoxModelParamPack {
#ifdef BOBOX_VERSION_OLD
		bobox::box_model_id_type id;
		bobox::box_tid_type tid; 
		bobox::runtime* rt;
		plainParameters params;

		BoxModelParamPack(bobox::box_model_id_type id, bobox::box_tid_type tid, 
			bobox::runtime* rt, const plainParameters &params) {

				this->id = id;
				this->tid = tid;
				this->rt = rt;
				this->params = params;
				//this->req = req;
		}

		const plainParameters* getPlainParameters() const { return &params; }
#else
		plainParameters params;
		bobox::box_model_parameters_pack modelPack;


		BoxModelParamPack(const bobox::box_model_parameters_pack& modelPackx,
			const plainParameters &params):modelPack(modelPackx) {
				this->params = params;
				//this->modelPack(modelPackx);
		}

		plainParameters getPlainParameters() const { return params; }
#endif
	};
} // namespace jm4bbx


#endif
